Computer operating systems can be classified as either single-tasking or multitasking. A single-tasking operating system provides a computing environment in which the computer's processor (CPU) can execute a single application program at a time. A multitasking operating system provides an environment in which the processor can execute a number of different application programs at the same time, more or less independently of one another.
With a multitasking operating system, two or more application programs executing simultaneously can contend for simultaneous access to the same protected resource. For example, in a personal computer, two applications executing under a multitasking operating system can both attempt to read from or write to a data storage device such as a floppy disk at the same time. The multitasking operating system resolves access conflicts in a manner that facilitates proper execution of all application programs while maintaining the integrity of the resource and its data. Known operating systems do this by mediating access of the application programs to the resource.
In particular, an operating system can require that any access by an application program to the resource be made through a call or trap to a special operating system routine called a device driver. Any attempt by the application to access the resource directly without going through the device driver results in an exception. For example, access to the resource can involve execution by the CPU of a privileged machine instruction. Only the operating system has the privilege necessary to execute this instruction, and any attempt by an application to execute the privileged instruction generates an exception. The exception causes control to be transferred back to the operating system, which prevents the application from directly accessing the resource.
Commonly, a personal computer can run any one of several different operating systems, including both single-tasking and multitasking operating systems. When a user decides to upgrade his or her computer by switching from a single-tasking to a multitasking operating system, the user faces a problem in that certain application programs adapted to the single-tasking operating system may not work properly under the multitasking operating system. Particularly troublesome are certain application programs designed to access protected resources directly, without using the operating system's device drivers.
Programs that access storage devices directly can do so for a number of reasons, such as execution speed and efficiency. Direct access affords faster overall data transfer to and from the storage device than is possible with mediated access. Thus direct access is used typically for application programs that must transfer large quantities of data rapidly. Such application programs can include, for example, backup utility programs, which can be used to make backup copies of files and other data from a hard disk or other on-line persistent storage to a floppy disk or other off-line storage medium.
In the single-tasking environment, direct access of a protected resource by an application program poses no resource contention problem, inasmuch as only one application program executes at a time. However, in the multitasking environment, the operating system needs to maintain control of the resource. Thus the user must abandon his or her existing application program, and must obtain a new program to perform the same task. This results in inconvenience and expense to the user. The user must not only pay the purchase price of the new program, but must spend valuable time learning how to use it and possibly teaching others, such as employees, how to use it.
Certain known multitasking operating systems, such as the Windows.TM. NT operating system by Microsoft, Corp. (Redmond, Wash.), attempt to support backup and other application programs that attempt to access protected resources directly, but without actually letting the applications perform direct access. An operating system of this kind can, for example, trap a backup application's attempts to perform direct access and in their place substitute calls to the corresponding device drivers of the operating system. Unfortunately, this substitution approach interferes with the application's proper functioning. Typically, the backup application's direct access code is time-critical, having been tuned for optimum data transfer performance. By substituting a device driver call for direct access, the operating system incurs extra time and processing overhead. In short, the substitution approach can cause data to be improperly transferred, and defeats the very purpose for having direct access in the first place.